<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<script>
    /*
    * 数组的方法：用来存放若干（有顺序的）元素的集合
    *   []
    *       一   .length 这个不是方法 这个是属性 返回数组的长度 即数组里面有几项 (注意)数组的length属性和字符串的length属性不一样
    *       数组的length属性可以修改，如果增加长度，多出来的部分用empty表示占位符，注意 empty 的值是 undefined
    *                           ，如果减小长度，从尾部消除，被消除的元素就再也不见了，即使后来将长度改回来也不存在
    *
    *       let arr = ["第一段","第二段","第三段"]
    *       arr.length = 4 //原本数组长度为3 这里将其改成4
    *       console.log(arr.length) //打印4
    *       console.log(arr) //打印 ["第一段","第二段","第三段",empty] 这里的empty相当于一个占位符 其实并不存在 如果访问arr[3] 就是undefined
    *       arr.length = 2 //再将数组的长度改成2
    *       console.log(arr) //打印 ["第一段","第二段"]
    *       console.log(arr[2]) //如果访问刚刚删掉的最后一位长度 会打印 undefined
    *       arr.length = 3 //如果我们再将其长度改回3 会怎样
    *       console.log(arr) //打印 ["第一段","第二段",empty]
    *
    *   思考：let arr = [1,2,3] //数组是对象 对象是引用类型 从头到尾就写了这一个对象 a指向这个对象 修改了之后又将b指向这个对象
    *        let a = arr
    *        arr.length = 2
    *        let b = arr
    *        console.log(a===b) //a和b都指向这同一个对象 所以打印true
    *
    *       二   .concat() 拼接返回新数组（注意返回的是全新的数组） 括号内可以接收若干个单独的元素，也可以接收一个数组
    *
    *       let a = [1,2]
    *       let b = [3,4]
    *       a.concat(b) // 返回一个新数组[1,2,3,4] a b数组依旧保持原样
    *       a.concat([3,4]) //返回一个新数组[1,2,3,4]
    *       a.concat(...[3,4]) //其实和后面这个写法一样 a.concat(3,4) 返回一个新数组[1,2,3,4]
    *
    *
    *
    * */





</script>
</body>
</html>